/**
 * Created with IntelliJ IDEA.
 * Description:
 * user:likai
 * Date:2023-02-08
 * Time:20:50
 */
class Solution {
//    public int lengthOfLongestSubstring(String s) {
//        if(s.length()<=1){
//            return s.length();
//        }
//        int l=0;
//        int r=1;
//        int max=0;
//        while(r<s.length()){
//            //相等了怎么样
//            if(s.charAt(l)==s.charAt(r)){
//                max=r-l>max?r-l:max;
//                l++;
//                r=l+1;
//            }
//            //不相等怎么样
//            else{
//                r++;
//            }
//        }
//        return max;
//    }
//    public int lengthOfLongestSubstring(String s) {
//        if(s.length()<=1){
//            return s.length();
//        }
//        int l=0;
//        int r=1;
//        int max=0;
//        while(l<s.length()){
//            char left=s.charAt(l);
//            for (int i = l+1; i < s.length(); i++) {
//                if(left==s.charAt(i)){
//                    max=max>i-l?max:i-l;
//                }
//            }
//
//            l++;
//        }
//
//        return max;
//    }
    //滑动窗口
    public int lengthOfLongestSubstring1(String s) {
        int[] last = new int[128];
        for(int i = 0; i < 128; i++) {
            last[i] = -1;
        }
        int n = s.length();

        int max = 0;
        int start = 0; // 窗口开始位置
        for(int i = 0; i < n; i++) {
            int index = s.charAt(i);
            start = Math.max(start, last[index] + 1);
            max= Math.max(max, i - start + 1);
            last[index] = i;
        }

        return max;
    }
}
public class Test {
    public static void main(String[] args) {
        String s="abcabcbb";
        Solution solution=new Solution();
        System.out.println(solution.lengthOfLongestSubstring(s));
    }
}
